package com.bot.nft.module.dc.service;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bot.nft.module.dc.domain.DcNftCert;
import com.bot.nft.module.dc.domain.bo.DcNftCertBo;
import com.bot.nft.module.dc.domain.vo.DcNftCertVo;

/**
 * <p>
 * 藏品证书服务类
 * </p>
 *
 * @author zhangkaige
 * @since 2024-01-24
 */
public interface IDcNftCertService {

    /**
     * 查看藏品证书
     *
     * @param certId 藏品证书标识
     * @return 藏品证书信息
     */
    DcNftCertVo getNftCertVo(String certId);

    /**
     * 查询藏品证书
     *
     * @param pageNo   当前页码
     * @param pageSize 每页多少条
     * @param mbId     会员标识
     * @param mbPhone  会员手机号
     * @param nftName  藏品名称
     * @param status   藏品证书状态
     * @return 分页信息
     */
    Page<DcNftCertVo> pageNftCertVo(Integer pageNo, Integer pageSize, String mbId, String mbPhone,
                                    String nftName, Integer status);

    /**
     * 转赠藏品证书
     *
     * @param certId     藏品证书标识
     * @param senderId   发送者会员标识
     * @param receiverId 接收者会员标识
     * @return 成功/true，失败/false
     */
    Boolean sendNftCert(String certId, String senderId, String receiverId);

    /**
     * 接收藏品证书
     *
     * @param certId     藏品证书标识
     * @param senderId   发送者会员标识
     * @param receiverId 接收者会员标识
     * @return 成功/true，失败/false
     */
    Boolean receiveNftCert(String certId, String senderId, String receiverId);

    /**
     * 挂售藏品证书
     *
     * @param certId 藏品证书标识
     * @param mbId   藏品证书标识
     * @return 成功/true，失败/false
     */
    Boolean sellNftCert(String certId, String mbId);

    /**
     * 发布藏品证书
     *
     * @param nftId   藏品标识
     * @param mbId    持有会员标识
     * @param busType 业务类型
     * @return 成功/true，失败/false
     */
    DcNftCert genCert(String nftId, String mbId, Integer busType);

    /**
     * 转移藏品证书
     *
     * @param certId  藏品证书标识
     * @param mbId    接收人标识
     * @param busType 业务类型
     * @return 成功/true，失败/false
     */
    Boolean transferCert(String certId, String mbId, Integer busType);

    /**
     * 修改藏品证书
     */
    Boolean updateCert(DcNftCertBo dcNftCertBo);


}
